package cn.tedu.v3_1;
//127.0.0.1
import java.io.*;
import java.net.*;
import java.util.*;

/**
 * Client客户端---改成Server 端模式 【优化】  15分  18：30完成
 */


public class Client {

    private Socket socket;
    String ip;
    private  static final String HOST="127.0.0.1";
    private  static final Integer PORT=8764;
    private BufferedReader br;
    private PrintWriter pw;
    public Client() {
        try {
            socket=new Socket(HOST,PORT);
            br=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF8"));

            pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF8")),true);
        }catch (NullPointerException e){
            System.out.println("友情提示：IP传入错误导致链接失败");
        } catch (UnknownHostException e){
            System.out.println("友情提示：IP传入错误");
        } catch (ConnectException e){
            System.out.println("客户端链接服务器端失败，提示：检查IP/端口");
        } catch (IOException e) {
            System.out.println("客户端链接服务器端失败，提示：检查IP/端口");
        }
        ip=socket.getInetAddress().getHostAddress();
    }

    public void start()  {


        try {
            new Thread(()->{
                try {

                    String message;

                    while((message= br.readLine())!=null){
                        System.out.println(ip+"服务器端说："+message);
                    }
                } catch (IOException e) {
                    System.out.println("服务器端读入失败");
                }
            }).start();

            Scanner input=new Scanner(System.in);
            while(true){
                System.out.println("客户端请输入：");
            String ip=socket.getInetAddress().getHostAddress();
            String line=input.nextLine();
            pw.println("客户端说"+line);
            //System.out.println(ip+"恭喜你抽中五百万！" );
            }
        } finally {
            if (br != null)
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            if (pw != null)
                pw.close();
            if (socket != null && !socket.isClosed())
                try {
                    socket.close();
                } catch (IOException e) {
                    System.out.println("通讯关闭失败");
                }
        }
    }
    public static void main(String[] args) {
        new Client().start();
    }

}
